package com.coder.rental.security;

import cn.hutool.core.util.StrUtil;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

/**
 * @author: zhanglin
 * @description:    密码加密和密码比对处理，
 * SpringSecurity会自动从spring容器中查找PasswordEncoder类型的Bean，一旦找到，就会使用这个Bean进行处理
 * 密码的加密和校验工作。也就是CustomerPasswordEncoder实现PasswordEncoder接口，SpringSecurity会自动
 * 调用CustomerPasswordEncoder类的方法进行密码加密和校验工作。@Component将CustomerPasswordEncoder
 * 注册为SpringBean容器。
 * @date 2025/3/24
 */
@Component
public class CustomerPasswordEncoder implements PasswordEncoder {

    //加密处理，对注册用户的密码进行加密
    @Override
    public String encode(CharSequence rawPassword) {
        return rawPassword.toString();
    }

    //比对处理，登录输入密码，将登录输入密码再次经过加密得到密文密码与数据库中存储的密文密码进行比对
    //rawPassword输入的密码，encodedPassword是数据库中的密码
    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        return StrUtil.equals(encode(rawPassword), encodedPassword);
    }
}
